/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ui;

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import javax.swing.*;
import modelo.ModeloDatos;
import modelo.ModeloDatosListener;
import utils.SpringUtilities;

/**
 *
 * @author juanan
 */
public class PanelDatos extends JPanel implements ModeloDatosListener {

    public JTextField tfFechaComienzo;
    public JTextField tfFechaFinal;
    public JTextField tfTemperatura;
    public JTextField tfTamañoInicial;
    //JLABEL correspondientes a los JTEXTFIELD de la tabla
    public JLabel lbFechaComienzo;
    public JLabel lbFechaFinal;
    public JLabel lbTemperatura;
    public JLabel lbTamañoInicial;
    public JLabel lbLuminosidad;
    //Resto de componentes necesarios para la tabla
    Object[] datoTipoGrados = {"Celsius", "Farenheit"};
    Object[] datoCondicionesLuminosidad = {"Baja", "Media", "Alta"};
    JList tipoGrados;
    JList luminosidad;
    public JComboBox cbTipoGrados;
    public JComboBox cbLuminosidad;
    private Dimension dimTextField;
    private ModeloDatos model;

    public PanelDatos(ModeloDatos model) {
        this.model = model;
        this.setLayout(new SpringLayout());
        iniciarComponentes();
        this.setPreferredSize(new Dimension(300, 300));
    }

    private void iniciarComponentes() {
        dimTextField = new Dimension(150, 20);
        tfFechaComienzo = new JTextField();
        tfFechaComienzo.setMaximumSize(dimTextField);
        tfFechaComienzo.setPreferredSize(dimTextField);
        tfFechaFinal = new JTextField();

        tfFechaFinal.setMaximumSize(dimTextField);
        tfFechaFinal.setPreferredSize(dimTextField);
        tfTemperatura = new JTextField();
        tfTemperatura.setMaximumSize(dimTextField);
        tfTemperatura.setPreferredSize(dimTextField);
        tfTamañoInicial = new JTextField();
        tfTamañoInicial.setMaximumSize(dimTextField);
        tfTamañoInicial.setPreferredSize(dimTextField);

        //JLABEL correspondientes a los JTEXTFIELD de la tabla
        lbFechaComienzo = new JLabel("Fecha Comienzo");
        lbFechaFinal = new JLabel("Fecha Fin");
        lbTemperatura = new JLabel("Temperatura");
        lbTamañoInicial = new JLabel("Tamaño Inicial");
        lbLuminosidad = new JLabel("Luminosidad");

        //Resto de componentes necesarios para la tabla
        tipoGrados = new JList(datoTipoGrados);
        cbTipoGrados = new JComboBox(datoTipoGrados);
        luminosidad = new JList(datoCondicionesLuminosidad);
        cbLuminosidad = new JComboBox(datoCondicionesLuminosidad);


        this.add(lbFechaComienzo);
        this.add(tfFechaComienzo);
        this.add(lbFechaFinal);
        this.add(tfFechaFinal);
        this.add(lbTemperatura);
        this.add(tfTemperatura);
        this.add(lbTamañoInicial);
        this.add(tfTamañoInicial);
        this.add(lbLuminosidad);
        this.add(cbLuminosidad);

        tfFechaComienzo.addActionListener(new AccionFechaInicio());
        tfFechaFinal.addActionListener(new AccionFechaFinal());
        tfTemperatura.addActionListener(new AccionTemperatura());
        tfTamañoInicial.addActionListener(new AccionTamañoInicial());
        cbLuminosidad.addActionListener(new AccionLuminosidad());

        SpringUtilities.makeCompactGrid(this, 5, 2, 0, 0, 10, 10);

    }

    @Override
    public void movementPerformed() {

        int dato = getModel().getLuminosidad();
        switch (dato) {
            case 1:
                cbLuminosidad.setSelectedItem("Alta");
                break;
            case 2:
                cbLuminosidad.setSelectedItem("Media");
                break;
            case 3:
                cbLuminosidad.setSelectedItem("Baja");
                break;
        }

        dato = getModel().getTamañoInicial();
        tfTamañoInicial.setText(dato + "");

        dato = getModel().getTemperatura();
        tfTemperatura.setText(dato + "");

        dato = getModel().getDate1();
        tfFechaComienzo.setText(dato + "");

        dato = getModel().getDate2();
        tfFechaComienzo.setText(dato + "");



    }

    public class AccionFechaInicio extends AbstractAction {

        @Override
        public void actionPerformed(ActionEvent e) {
            int dato = Integer.parseInt(tfFechaComienzo.getText());
            getModel().setDate1(dato);

        }
    }

    public class AccionFechaFinal extends AbstractAction {

        @Override
        public void actionPerformed(ActionEvent e) {
            int dato = Integer.parseInt(tfFechaComienzo.getText());
            getModel().setDate1(dato);

        }
    }

    public class AccionTemperatura extends AbstractAction {

        @Override
        public void actionPerformed(ActionEvent e) {
            int dato = Integer.parseInt(tfTemperatura.getText());
            getModel().setTemperatura(dato);

        }
    }

    public class AccionTamañoInicial extends AbstractAction {

        @Override
        public void actionPerformed(ActionEvent e) {
            int dato = Integer.parseInt(tfTamañoInicial.getText());
            getModel().setTamañoInicial(dato);

        }
    }

    public class AccionLuminosidad extends AbstractAction {

        @Override
        public void actionPerformed(ActionEvent e) {
            if (cbLuminosidad.getSelectedItem().toString().equals("Alta")) {
                getModel().setLuminosidad(1);
            }
            if (cbLuminosidad.getSelectedItem().toString().equals("Media")) {
                getModel().setLuminosidad(2);
            }
            if (cbLuminosidad.getSelectedItem().toString().equals("Baja")) {
                getModel().setLuminosidad(3);
            }


        }
    }

    /**
     * @return the modeloDatos
     */
    public ModeloDatos getModel() {
        return model;
    }

    /**
     * @param modeloDatos the modeloDatos to set
     */
    public void setModel(ModeloDatos model) {
        this.model = model;
    }
}
